﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _65抽象类练习
{
    class Program
    {
        static void Main(string[] args)
        {
            Shape shape = new Square(5,6);
            double area = shape.GetArea();
            double perimeter = shape.GetPerimetar();
            Console.WriteLine("这个形状的面积是{0}，周长是{1}",area,perimeter);
            Console.ReadKey();
        }

        public abstract class Shape
        {
            public abstract double GetArea();
            public abstract double GetPerimetar();
        }

        public class Circle : Shape
        {
            private double _r;
            
            public double R
            {
                get { return _r; }
                set { _r = value; }
            }

            public Circle(double r)
            {
                this.R = r;
            }

            public override double GetArea()
            {
                return Math.PI * this.R * this.R;
            }

            public override double GetPerimetar()
            {
                return 2 * Math.PI * this.R;
            }
        }
        
        public class Square : Shape
        {
            private double _height;

            public double Height
            {
                get { return _height; }
                set { _height = value; }
            }

            private double _width;

            public double Width
            {
                get { return _width; }
                set { _width = value; }
            }

            public Square(double heigth, double width)
            {
                this.Height = heigth;
                this.Width = width;
            }

            public override double GetArea()
            {
                return this.Height * this.Width;
            }

            public override double GetPerimetar()
            {
                return (this.Height + this.Width) * 2;
            }
        }

    }
}
